iT邦幫忙

2024 iThome 鐵人賽

DAY 26
0
Python

pythonGUI學習筆記系列 第 26

Day 26 PySide6 插入網頁QWebEngineView

  • 分享至 

  • xImage
  •  

QWebEngineView

QWebEngineView 網頁顯示的元件,適用於在應用程序中嵌入網頁,他除裡可以顯示網頁外,也可以操作網頁的內容。

1. QWebEngineView 使用

  • QWebEngineView() : 用來創建網頁顯示的元件。
  • setUrl(QUrl | str) : 設定要加載的網址,先將網址放入 QUrl 對象,在設定到 setUrl 。以下範例直接加載 google 網站的網址。
from PySide6.QtWidgets import QApplication, QWidget, QVBoxLayout
from PySide6.QtWebEngineWidgets import QWebEngineView
from PySide6.QtCore import QUrl

class MainWindow(QWidget):
    def __init__(self):
        super().__init__()

        self.setGeometry(100, 100, 1000, 500)

        # 創建 QWebEngineView 並加載 URL
        self.web = QWebEngineView()
        self.web.setUrl(QUrl("https://www.google.com"))

        # 設置主視窗布局
        layout = QVBoxLayout()
        layout.addWidget(self.web)
        self.setLayout(layout)

if __name__ == "__main__":
    app = QApplication([])
    window = MainWindow()
    window.show()
    app.exec()

google網頁

2. 加載本地文件

除了加載網頁 URL , QWebEngineView 也可以加載本地的網頁文件。

from PySide6.QtCore import QUrl, QDir
from PySide6.QtWidgets import QApplication , QVBoxLayout, QWidget
from PySide6.QtWebEngineWidgets import QWebEngineView

class MainWindow(QWidget):
    def __init__(self):
        super().__init__()

        self.setWindowTitle("加載 HTML 字符串")
        self.setGeometry(100, 100, 1000, 500)


        # 創建 QWebEngineView 並加載本地 HTML 文件
        self.web = QWebEngineView()
        path = QDir.current().filePath("test.html")
        self.web.setUrl(QUrl(path))

        # 設置主視窗布局
        layout = QVBoxLayout()
        layout.addWidget(self.web)
        self.setLayout(layout)

if __name__ == "__main__":
    app = QApplication([])
    window = MainWindow()
    window.show()
    app.exec()

3. 加載 HTML 字串

QWebEngineView 也可以直接加載 HTML 字串 , 不用透過加載 URL 和 文件使用。使用 setHtml

from PySide6.QtWidgets import QApplication , QVBoxLayout, QWidget
from PySide6.QtWebEngineWidgets import QWebEngineView

class MainWindow(QWidget):
    def __init__(self):
        super().__init__()

        self.setWindowTitle("加載 HTML 字符串")
        self.setGeometry(100, 100, 1000, 500)

        # 創建 QWebEngineView 並加載 HTML 字符串
        self.web = QWebEngineView()
        html_content = """
        <html>
        <body><h1>加載 HTML</h1></body>
        </html>
        """
        self.web.setHtml(html_content)      # 加載 HTML

        # 設置主視窗布局
        layout = QVBoxLayout()
        layout.addWidget(self.web)
        self.setLayout(layout)

if __name__ == "__main__":
    app = QApplication([])
    window = MainWindow()
    window.show()
    app.exec()

https://ithelp.ithome.com.tw/upload/images/20241005/20169254hLH47X7FHN.png

4. QWebEngineView 的常用信號

  • loadFinished.connect(function) : 網頁載入完成後會觸發。,下面是當網也載入完成後,會列印 「載入完成」。
from PySide6.QtCore import QUrl, QDir
from PySide6.QtWidgets import QApplication , QVBoxLayout, QWidget , QPushButton
from PySide6.QtWebEngineWidgets import QWebEngineView

class MainWindow(QWidget):
    def __init__(self):
        super().__init__()

        self.setWindowTitle("加載 HTML 字符串")
        self.setGeometry(100, 100, 1000, 500)

        # 創建 QWebEngineView 並加載本地 HTML 文件
        self.web = QWebEngineView()
        self.web.setUrl(QUrl("https://www.google.com"))
        self.web.loadFinished.connect(lambda: print("載入完成"))

        # 設置主視窗布局
        layout = QVBoxLayout()
        layout.addWidget(self.web)
        self.setLayout(layout)

if __name__ == "__main__":
    app = QApplication([])
    window = MainWindow()
    window.show()
    app.exec()

5. QWebEngineView 的常用功能

  • load(Qurl) : 載入網頁 。
  • reload() : 重新整理。
  • forward() : 前一頁。
  • back() : 後一頁。
  • selectedText() : 返回所選取的文字。下面範例是當按下按鈕後,會返回選取的文字。
from PySide6.QtCore import QUrl
from PySide6.QtWidgets import QApplication , QVBoxLayout, QWidget , QPushButton
from PySide6.QtWebEngineWidgets import QWebEngineView

class MainWindow(QWidget):
    def __init__(self):
        super().__init__()

        self.setWindowTitle("加載 HTML 字符串")
        self.setGeometry(100, 100, 1000, 500)

        self.btn = QPushButton("列印所選文字")
        self.btn.clicked.connect(lambda: print(self.web.selectedText()))

        # 創建 QWebEngineView 並加載本地 HTML 文件
        self.web = QWebEngineView()
        self.web.setUrl(QUrl("https://www.google.com"))

        # 設置主視窗布局
        layout = QVBoxLayout()
        layout.addWidget(self.web)
        layout.addWidget(self.btn)
        self.setLayout(layout)

if __name__ == "__main__":
    app = QApplication([])
    window = MainWindow()
    window.show()
    app.exec()

總結

  • QWebEngineView 使用
功能 方法
創建元件 QWebEngineView()
設定加載網址 setUrl(QUrl
  • QWebEngineView 的常用信號
功能 方法
載入完成時觸發 loadFinished.connect(function)
  • QWebEngineView 的常用功能
功能 方法
載入網頁 load(QUrl)
重新整理 reload()
前一頁 forward()
後一頁 back()
返回所選文字 selectedText()

上一篇
Day 25: PySide6 鼠標事件
下一篇
Day 27: PySide6 設定元件樣式
系列文
pythonGUI學習筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言